Method of retrieving entities

ABSTRACT

The present invention relates to a method of retrieving points that can be plotted in a predetermined area, where the locations of the points are indexed in an index that comprises regional data. The regional data defines a plurality of regions, and each region encompasses one or more of the points. In addition, the index comprises linking data, which, for each region, identifies the point or points encompassed by that region. The method comprises the steps of:  
     (i) reviewing the regional data in the index to identify regions that are wholly contained by the predetermined area; and  
     (ii) reviewing the linking data to retrieve points encompassed by the identified regions.

[0001] The present invention relates to a method of retrieval, and issuitable for use with entities stored in a database, or equivalentstorage.

[0002] It can readily be seen that when there are vast numbers ofentities in a database, identifying entities in accordance with a queryin respect of data in the database within a reasonable period of time isa non-trivial exercise. To ease the retrieval process, data in adatabase is generally indexed in some way, and queries are thenperformed on the index. The way in which the entities are indexed can beexpected to have a significant bearing on the quality and speed ofretrieval, and as information is increasingly being stored in databases,there is significant interest in finding improved ways of indexing data.

[0003] It is known to index location data based on place names. It isalso known to retrieve a set of geographic coordinates from place names,and build an index based on topological information extracted from thecoordinates (e.g. “GIPSY”: developed at U.C. Berkeley in conjunctionwith a joint NSF/NASA/ARPA (Wilensky et al., 1994) initiative).Furthermore, it is known to build an index based on the geographicalcoordinates themselves: database vendors such as Oracle™ have developedsystems for storing and indexing geometrical data—e.g. Oracle spatialdata cartridge, which allows a spatial querying to be carried out usingan extended (non-standard) form of SQL. Other vendors, like Maplnfo™,SpatialWare™, Innogistic™ and Informix™ have similar proprietary ways ofdealing with spatial data. In particular, Innogistic™ have developed aproduct known as Cartology DSI, which stores geometrical vector data asblobs (binary large objects—which are not intrinsically recognisable bythe underlying database). It also creates indexes outside of thedatabase based on the well-known ‘quad tree’ idea. The index data isstored in binary-tree structures and is accessed by DistributedComponent Object Model (DCOM) middleware services.

[0004] Both the Oracle™ and lnnogistic™ systems make use of thequad-tree method, in which an entire area of a layer is divided andsubdivided into a series of four nested squares. The entire area isassigned to one of four squares designated 0, 1, 2, and 3. Each of thesesquares is subdivided into four smaller squares. The area of square 1becomes 10, 11, 12, and 13. Each of these is further subdivided,meaning, for example, that the subdivisions of square 11 would beassigned index values of 110, 111, 112, and 113. As a result, anylocation in the map can be referred to by a single index number. Thedisadvantage with this quad-tree method is that processing time iswasted if there are no points within the subdivided squares; if indexingis performed over a large area, this wasted processing time isnon-trivial and costly.

[0005] According to a first aspect of the present invention there isprovided a method of retrieving points that are contained within apredetermined area. The method comprises

[0006] (i) retrieving data identifying a region, where the regionencompasses one or more points and is associated with linking datawhich, for each region, identifies the point or points encompassed bythat region;

[0007] (ii) performing a process in respect of the region, the processcomprising the steps of:

[0008] comparing extents of the region with extents of the predeterminedarea in order to establish whether the region overlaps with thepredetermined area;

[0009] if there is overlap, retrieving data identifying sub-regions ofthe region and identifying any such sub-regions whose extents are whollywithin the predetermined area;

[0010] (iii) for each sub-region, repeating the process until allsub-regions thereof falling wholly within the predetermined area areidentified, and

[0011] (iv) accessing linking data corresponding to the identifiedsub-regions so as to retrieve points encompassed by the sub-regions.

[0012] The plurality of points is advantageously pre-stored as a list ofpoints, in an order given by the predetermined relationship between theregion and sub-regions. Furthermore the linking data includes a valueindicating the position of a first of the corresponding encompassedpoints in the list of points. The accessing step then involvesretrieving an identifier representative of the number of encompassedpoints and retrieving the position value associated with the identifiedregion or sub-region. This enables retrieval of the number ofencompassed points from a position in the list associated with theposition value.

[0013] Conveniently the points correspond to data that can be expressedin two dimensions, for example location (longitude and latitude) data orrange data. Range data can include business hours (e.g. opening andclosing times), price margins (e.g. maximum and minimum prices), and/ormedical data (e.g. maximum and minimum blood pressure). Thus apredetermined area could be a range of prices—such as a maximum houseprices and a minimum house price. In accordance with the methoddescribed above, the extents of the predetermined area (i.e. pricerange) are compared with a region retrieved from the index. All regionsthat overlap with the price range are then successively retrieved untila region, which falls wholly within the specified price range, isidentified. All points falling within this identified region thusrepresent goods being of a price that falls within the specified maximumand minimum price range.

[0014] Further aspects, features and advantages of the present inventionwill be apparent from the following description of preferred embodimentsof the invention, which refers to the accompanying drawings, in which

[0015]FIG. 1 is a schematic diagram illustrating aspects of acommunications system used by the invention;

[0016]FIG. 2 is a schematic diagram showing an example of points to beindexed according to the invention;

[0017]FIG. 3 is a schematic diagram showing an expanded view of FIG. 2;

[0018]FIGS. 4a & 4 b in combination comprise a flow diagram showing anembodiment of an indexing process according to the present inventionwhen indexing the points shown in FIG. 2;

[0019]FIG. 5 is a schematic diagram showing application of the processof FIGS. 4a & 4 b to create a quad around the points shown in FIG. 2;

[0020]FIG. 6 is a schematic diagram showing application of the processof FIGS. 4a & 4 b to create a sub-quad of the quad created according toFIG. 5;

[0021]FIG. 7 is a schematic diagram showing application of the processof FIGS. 4a & 4 b to create a sub-quad of one of the sub-quads of FIG.6;

[0022]FIG. 8 is an expanded view of FIG. 7;

[0023]FIG. 9 is an expanded view of FIG. 8 showing application of theprocess of FIGS. 4a & 4 b to create another of the sub-quads shown inFIG. 7;

[0024]FIG. 10 is an expanded view of FIG. 8 showing application of theprocess of FIGS. 4a & 4 b to create another of the sub-quads shown inFIG. 7;

[0025]FIG. 11 is a schematic diagram showing application of the processof FIGS. 4a & 4 b to create another sub-quad of one of the sub-quads ofFIG. 6;

[0026]FIG. 12 is a schematic diagram illustrating a process of storingpoints according to the invention;

[0027]FIGS. 13a & 13 b in combination comprise a flow diagram showing anembodiment of a retrieving process according to the present inventionwhen retrieving points in accordance with an area of interest;

[0028]FIG. 14 is a schematic diagram showing an example of an area ofinterest for which points are to be retrieved;

[0029]FIG. 15 is a schematic diagram showing application of the processof FIGS. 13a & 13 b to one of the sub-quads of FIG. 6;

[0030]FIGS. 16 and 17 are an enlarged view of FIG. 15 and are schematicdiagrams showing application of the process of FIGS. 13a & 13 b to afirst of the sub-quads of FIG. 7;

[0031]FIG. 18 is an enlarged view of FIG. 15 and shows the area ofinterest and a second of the sub-quads of FIG. 7;

[0032]FIG. 19 is a schematic diagram corresponding to FIG. 18 showingapplication of the process of FIGS. 13a & 13 b to the second of thesub-quads of FIG. 7;

[0033]FIGS. 20a & 20 b are schematic diagrams showing application of theprocess of FIGS. 13a & 13 b to a (first) sub-quad of the sub-quad shownin FIG. 18;

[0034]FIGS. 21a & 21 b are schematic diagrams showing application of theprocess of FIGS. 13a & 13 b to another (a second) sub-quad of thesub-quad shown in FIG. 18;

[0035]FIGS. 22a & 22 b are schematic diagrams showing application of theprocess of FIGS. 13a & 13 b to another sub-quad (a third) of thesub-quad shown in FIG. 18;

[0036]FIGS. 23a & 23 b are schematic diagrams showing application of theprocess of FIGS. 13a & 13 b to another sub-quad (a fourth) of thesub-quad shown in FIG. 18;

[0037]FIG. 24 is an enlarged view of FIG. 15 and shows the area ofinterest and a third of the sub-quads of FIG. 7;

[0038]FIG. 25 is a schematic diagram corresponding to FIG. 24 showingapplication of the process of FIGS. 13a & 13 b to the third of thesub-quads of FIG. 7;

[0039]FIGS. 26a & 26 b are schematic diagrams showing application of theprocess of FIGS. 13a & 13 b to a (first) sub-quad of the sub-quad shownin FIG. 24;

[0040]FIGS. 27a & 27 b are schematic diagrams showing application of theprocess of FIGS. 13a & 13 b to another (a second) sub-quad of thesub-quad shown in FIG. 24;

[0041]FIGS. 28a & 28 b are schematic diagrams showing application of theprocess of FIGS. 13a & 13 b to another sub-quad (a third) of thesub-quad shown in FIG. 24;

[0042]FIGS. 29a & 29 b are schematic diagrams showing application of theprocess of FIGS. 13a & 13 b to another sub-quad (a fourth) of thesub-quad shown in FIG. 24;

[0043]FIG. 30 is an enlarged view of FIG. 15 and shows the area ofinterest and a fourth of the sub-quads of FIG. 7;

[0044]FIG. 31 is a schematic diagram corresponding to FIG. 30 showingapplication of the process of FIGS. 13a & 13 b to the fourth of thesub-quads of FIG. 7;

[0045]FIG. 32 is a flow diagram showing further steps involved in theretrieving process of FIGS. 13a & 13 b; and

[0046] Each of FIGS. 33a-33 e is a schematic illustration of a region ofinterest for which points are to be retrieved according to theinvention.

OVERVIEW

[0047] Database servers DB1, DB2, such as those shown in FIG. 1,typically store information for retrieval by users. At the physicallevel, the communications environment within which the database serversDB1, DB2 are located includes at least one user interface, commonlyprovided by a computer terminal or workstation T3.

[0048] Embodiments of the invention can be executed on the workstationT3, which is connected to database servers DB1, DB2. Although thedatabase servers DB1, DB2 are shown on the same LAN N1 as the terminalT3, it is understood that the database servers DB1, DB2 could beconnected to different networks, which in turn are connected to LAN N1via one or more switches and/or routers (not shown). Embodiments receivedata as input, for instance as a file, and build an index to the data,as is described in more detail below. The built index is then saved inone of the databases DB1, DB2, and the indexed data is also saved, in anorder given by the structure of the built index, to one of the databasesDB1, DB2. The built index can be saved on the same, or a different,database as the database on which the data is stored.

[0049] Embodiments of the present invention are concerned with indexingentities that are defined by 2-dimensions. Obvious examples of entitiesthat can be indexed according to embodiments include the location ofobjects, such as petrol stations, cash points etc., as the position ofobjects is commonly defined in terms of latitude and longitude. Manyother entities can be represented by 2-dimensions—e.g. acceleration of amotorbike as a function of time and speed, conductivity of a material asa function of material properties and temperature, deformation of anobject as a function of material properties and force applied to theobject etc. Furthermore, transformations can be applied to n-dimensionalparameters to reduce them to 2-dimensional parameters, which can bedisplayed in a 2-dimensional space.

[0050] A further example of entities that can be indexed usingembodiments of the present invention include range information, e.g.temporal information, price information, and medical conditioninformation.

[0051] An example of temporal range information is opening and closingtimes of business and leisure establishments—these times can beexpressed in two dimensions, with, for example, the closing and openingtimes respectively on the ordinate and abscissa axes. Similarly,delivery times (earliest and latest) can be expressed in two dimensions.

[0052] An example of price information includes prices of goods, sothat, for example, maximum and minimum prices of goods can berespectively expressed on one of two dimensions, and so indexed usingembodiments of the invention. Price information also includes tradinginformation, as used to buy and sell stocks, shares, bonds etc.

[0053] An example of medical condition information includes statisticsrelating to measurable conditions such as body temperature and bloodpressure, and conditions that can be translated into numericalrepresentations, such as cancer sites.

[0054] In the following description, entities are generally referred toas “points” in order to disassociate the context of the entities (e.g.petrol station, cash point etc.) from the mechanics of the embodiment.

[0055] In overview, an embodiment of a method of indexing points isdescribed with reference to FIG. 2. FIG. 2 shows an area R1 within whicha plurality of points 200 is located. Each of the points is defined inx,y co-ordinate space. Essentially the area R1 comprising points to beindexed is examined and split into areas R3, R4 containing points andarea R2 not containing points (the areas could be split into any shape,such as a rectangle, triangle, or strips; FIG. 2 shows the areas splitinto strips for the purposes of describing the inventive concept of thisinvention). The embodiment then examines the distribution of points inareas R3 and R4, identifying on a smaller scale than was considered forregion R1, areas in R3 and R4 that comprise points. Referring to FIG. 3,R4 essentially becomes R11 and the distribution of points within R11 isexamined. By concentrating on the distribution of points in this way,areas that do not contain any points, Region R2 in FIG. 2 and region R12in FIG. 3 are implicitly discarded. The process is continually repeated,effectively “burrowing down” through a series of areas of diminishingsize, until the size of an area is such that it collapses to the size ofa single point. As the embodiment “burrows down”, each area is linked tothe area above it, such that each point is linked by a series of areas.An index to these points comprises the series of areas, and these areasand points are used to create an index (described in more detail below)that is saved in database DB1. The relationship between the points andareas enables points to be identified by identification of an area inthe index.

[0056] One of the advantages of creating an index as described above isthat the query search domain is confined to areas that are known tocontain points—i.e. queries will only be carried out on the areas savedin the database DB1, and as these areas by definition include points,the search domain is relatively compact. Referring back to FIG. 2, theprocess of identifying points in respect of a query is faster accordingto the embodiment described above, than if the index comprisedinformation relating to the whole of area R1.

[0057] In a particular form of an embodiment, presented below withreference to FIGS. 4-11, points are 2-dimensional co-ordinates in x, yspace. If the entities to be indexed are acceleration values, defined bya corresponding set of time and speed values, the time and speed valuesmap directly onto an x,y co-ordinate space, so that (t1, v1), (t2, v2) .. . (tn, vn) are co-ordinates of points corresponding to theacceleration values. Similarly, if the entities to be indexed arelocation values, defined by a corresponding set of latitude andlongitude values, the latitude and longitude values map directly onto anx, y co-ordinate space, such that (lat_1, long_1) . . . (lat_n, long_n)are co-ordinates of points corresponding to location values. It isassumed that the points have been stored (e.g. written to a file), sothat embodiments of the invention read the points in from a file. Inalternative embodiments a user may input the points when the index tothose points is about to be built.

[0058] Furthermore, in the embodiment presented below, the areas aresquares, referred to as “quads” and “sub-quads” in the descriptionbelow, and each quad is successively split into four sub-quads. Eachsub-quad is examined for the existence of points. Those with no pointsare discarded, which is an equivalent process to discarding the area R2described with reference to FIGS. 2 and 3 above, and each new sub-quadcontaining points is “shrunk wrapped” around the smallest area thatcontains points in that sub-quad. (The embodiment analyses the areas inaccordance with squares, but many other shapes could be used to“shrink-wrap” around the points). Each sub-quad is then divided againinto four sub-quads, empty sub-quads are again discarded and eachremaining sub-quad “shrunk-wrapped” about its smallest area containingpoints. Eventually, each remaining sub-quad will have been“shrunk-wrapped” onto a single point and its co-ordinates will be thoseof the point concerned. Once the quad and all the sub-quads, includingboth the intervening sub quads which haven't been discarded and thesub-quads coinciding with single points, have been identified, an indexto the points, comprising the quad and sub quads relevant to each one,is created. This is described in detail after the discussion of FIGS.5-10.

[0059] In the following, steps S 4.1 through to S 4.9 are shown insequence in the flow chart of FIGS. 4a and 4 b and illustrated by theoperations with the same reference numerals as shown in FIGS. 5-11.

[0060]FIG. 5

[0061] Step S4.1 Read in x, y co-ordinates of all points to be indexed(as stated above, the points may be read from either a storage location,such as a file, or directly from a user);

[0062] Step S4.2 Draw up a bounding box for all points, identifying, and“shrink-wrapping” around, the co-ordinates of the outermost points (thebounding box is given by the difference between the co-ordinates of theoutermost points in both the x and y dimensions: dx and dyrespectively). This bounding box is the outermost quad 501;

[0063] Step S4.3 & Step S4.4 Save extents of quad 501—i.e. dx, dy—andthe co-ordinates of the points in it;

[0064] Step S4.5 Check whether the outermost quad 501 has positive size(i.e. are dx, dy of quad 501 equal to zero?) In the example shown inFIG. 5, there is an outermost quad 501, because the quad has multiplepoints in it, dx, dy are non-zero, and thus quad 501 has positive size;

[0065] Step S4.6 Split the outermost quad 501 into four sub-quads, 503a, 503 b, 503 c, 503 d;

[0066] Step S4.6.1 Tag each point with its relevant sub-quad and recordthe number of points in each sub-quad;

[0067] Step S4.7 Starting with sub-quad 0 (503 a) check whether thereare any points in the sub-quad 503 a.

[0068] As there are points, input the points within this sub-quad 0 (503a) to Step S4.1 and run through steps Step S4.1 onwards for sub-quad 0(503 a), as described below with reference to FIG. 6.

[0069]FIG. 6

[0070] Step S4.1 Read in x, y co-ordinates of points corresponding tosub-quad 503 a;

[0071] Step S4.2 Draw up bounding box for all points in 503 a, creating“shrink-wrapped” sub-quad 0 601. This illustrates the principledescribed above—the embodiment identifies an area within sub-quad 0where there are no points, and this area is then discarded;

[0072] Step S4.3 & Step S4.4 Save extents of sub-quad 0 (601)—i.e. dx,dy—and the co-ordinates of points in it;

[0073] Step S4.5 Check whether sub-quad 601 has positive size? (i.e. aredx, dy of quad 601 equal to zero?) As can be seen in FIG. 6, quad 601has multiple points in it, dx, dy for quad 601 are non-zero, and thussub-quad 601 has positive size;

[0074] Step S4.6 Split sub-quad 0 601 into 4 sub-quads: 0,0 (603 a), 0,1(603 b), 0,2 (603 c), 0,3 (603 d)

[0075] Step S4.6.1 Tag each point with its relevant sub-quad and recordthe number of points in each sub-quad;

[0076] Step S4.7 Starting with sub-quad 0,0 (603 a) Check whether thereare any points in the sub-quad 0,0 (603 a): As there are points, inputthe points within this sub-quad 0,0 (603 a) to Step S4.1 and run throughsteps Step S4.1 onwards for sub-quad 0,0 (603 a), as described belowwith reference to FIG. 7.

[0077]FIG. 7

[0078] Step S4.1 Read in x, y co-ordinates of points corresponding tosub-quad 603 a;

[0079] Step S4.2 Draw up bounding box for all points in sub-quad 0,0(603 a), creating “shrink-wrapped” sub-quad 0,0 701. As for sub-quad 0,the area without points within sub-quad 603 a is ignored;

[0080] Step S4.3 & Step S4.4 Save extents of sub-quad 0, 0 (701)—i.e.dx, dy—and the co-ordinates of points in it;

[0081] Step S4.5 Check whether sub-quad 701 has positive size? (i.e. aredx, dy of quad 701 equal to zero?) As can be seen in FIG. 7, quad 701has multiple points in it, dx, dy for quad 701 are non-zero, and thissub-quad 701 has positive size;

[0082] Step S4.6 Split sub-quad 0,0 701 into 4 sub-quads: 0,0,0 (703 a),0,0,1 (703 b), 0,0,2 (703 c), 0,0,3 (703 d)

[0083] Step S4.6.1 Tag each point with its relevant sub-quad and recordthe number of points in each sub-quad;

[0084] Step S4.7 Starting with sub-quad 0,0,0 (703 a) check whetherthere are any points in the sub-quad 0,0,0 (703 a): there is one pointin sub-quad 0,0,0 (703 a) so input the points within this sub-quad 0,0,0to Step S4.1 and run through steps Step S4.1 onwards for sub-quad 0,0,0(703 a), as described below with further reference to FIG. 7.

[0085] Also FIG. 7

[0086] Step S4.1 Read in x, y co-ordinates of points corresponding tosub-quad 703 a;

[0087] Step S4.2 Draw up bounding box for all points in sub-quad 0,0,0(703 a), creating “shrink-wrapped” sub-quad 0,0,0: here around a singlepoint;

[0088] Step S4.3 & Step S4.4 Save the extents of the “shrink-wrapped”sub-quad 0,0,0, which is now down to a single point such that dx, dy=0,and save the co-ordinates of the point;

[0089] Step S4.5 Check whether sub-quad the point has positive size?(i.e. are dx, dy of the point equal to zero?) In fact dx and dy are bothzero because the sub-quad 703 a collapsed into a single point. So ontoStep S4.8;

[0090] Step S4.8 Increment the sub-quad counter i at this level (0,0,i),input the points (Step S4.7) within sub-quad 0,0,1 (703 b) to Step S4.1and run through steps Step S4.1 onwards for sub-quad 0,0,1 (703 b), asdescribed below with reference to FIG. 8.

[0091]FIG. 8

[0092] Step S4.1 Read in x, y co-ordinates of points corresponding tosub-quad 703 b;

[0093] Step S4.2 Draw up bounding box for all points in sub-quad 0,0,1(703 b) creating “shrink-wrapped” sub-quad 0,0,1 801. As for sub-quad 0,the area without points within sub-quad 703 b is ignored;

[0094] Step S4.3 & Step S4.4 Save extents of sub-quad 801—i.e. dx,dy—and the co-ordinates of points in it;

[0095] Step S4.5 Check whether sub-quad 801 has positive size? (i.e. aredx, dy of quad 703 a equal to zero?). Sub-quad 801 has multiple pointsin it, dx, dy for quad 801 are non-zero, and thus sub-quad 801 does havepositive size;

[0096] Step S4.6 Split sub-quad 0,0,1 801 into 4 sub-quads: 0,0,1,0 (803a), 0,0,1,1 (803 b), 0,0,1,2 (803 c), 0,0,1,3 (803 d)

[0097] Step S4.6.1 Tag each point with its relevant sub-quad and recordthe number of points in each sub-quad;

[0098] Step S4.7 Starting with sub-quad 0,0,1,0 (803 a) Check whetherthere are any points in the sub-quad 0,0,1,0 (803 a): There are nopoints in sub-quad 0,0,1,0 (803 a);

[0099] Step S4.8 Increment the sub-quad counter i at this level(0,0,1,i) and input the points (Step S4.7) within sub-quad 0,0,1,1 (803b) to Step S4.1 and run through steps Step S4.1 onwards for sub-quad0,0,1,1 (803 b), as described below with reference to FIG. 9.

[0100]FIG. 9

[0101] Step S4.1 Read in x, y co-ordinates of points corresponding tosub-quad 803 b;

[0102] Step S4.2 Draw up bounding box for all points in sub-quad 0,0,1,1(803 b), creating “shrink-wrapped” sub-quad 0,0,1,1, which is a singlepoint;

[0103] Step S4.3 & Step S4.4 Save extents of the single point—i.e. dx,dy—and the co-ordinates of the point;

[0104] Step S4.5 Check whether the point has positive size? (i.e. aredx, dy of the point equal to zero?) In fact dx and dy are both zerobecause the sub-quad 803 b collapsed into a single point. So onto StepS4.8;

[0105] Step S4.8 Increment the sub-quad counter i at this level(0,0,1,i) and input the points within sub-quad 0,0,1,2 (803 b) to StepS4.1 and run through steps Step S4.1 onwards for sub-quad 0,0,1,2 (803b), as described with further reference to FIG. 9

[0106] Also FIG. 9

[0107] Step S4.1 Read in x, y co-ordinates of points corresponding tosub-quad 803 c;

[0108] Step S4.2 Draw up bounding box for all points in sub-quad 0,0,1,2(803 c), creating “shrink-wrapped” sub-quad 0,0,1,2, which is a singlepoint;

[0109] Step S4.3 & Step S4.4 Save extents of the single point—i.e. dx,dy—and the co-ordinates of the point;

[0110] Step S4.5 Check whether the point has positive size? (i.e. aredx, dy of the point equal to zero?) In fact dx and dy are both zerobecause the sub-quad 803 c collapsed into a single point. So onto StepS4.8;

[0111] Step S4.8 Increment the sub-quad counter i at this level(0,0,1,i). There are no points (Step S4.7) within sub-quad 0,0,1,3 (803d), so back to Step S4.8: increment the sub-quad counter i at this level(0,0,1,i): but i>3 so

[0112] Step S4.9 Return to sub-quad level 0,0,i and increment thesub-quad counter from 1 to 2, and thus consider sub-quad 0,0,2 (703 c):There is a point in sub-quad 0,0,2 (703 c) so input the points (StepS4.7) within sub-quad 0,0,2 (703 c) to Step S4.1 and run through stepsStep S4.1 onwards for sub-quad 0,0,2 (703 c), as described withreference to FIG. 10.

[0113]FIG. 10

[0114] Step S4.1 Read in x, y co-ordinates of points corresponding tosub-quad 703 c;

[0115] Step S4.2 Draw up bounding box for all points in sub-quad 0,0,2(703 c), creating “shrink-wrapped” sub-quad 0,0,2, which is a singlepoint;

[0116] Step S4.3 & Step S4.4 Save extents of the single point—i.e. dx,dy—and the co-ordinates of the point;

[0117] Step S4.5 Check whether the point has positive size? (i.e. aredx, dy of the point equal to zero?) In fact dx and dy are both zerobecause the sub-quad 703 c collapsed into a single point. So onto StepS4.8;

[0118] Step S4.8 Increment the sub-quad counter i at this level (0,0,i).There are no points (Step S4.7) within sub-quad 0,0,3 (703 d), so backto Step S4.8: increment the sub-quad counter i at this level (0,0,i):but i>3 so

[0119] Step S4.9 Return to sub-quad level 0,i and increment the sub-quadcounter i from 0 to 1, and thus consider sub-quad 0,1 (603 b), asdescribed with reference to FIG. 11.

[0120]FIG. 11

[0121] The process described in FIGS. 6-10 is repeated, but for sub-quad0,1, and once all of the points within sub-quad 0,n have been assignedto sub-quads, the process moves onto sub-quad 1.

[0122] As described earlier, building an index to these points is then amatter of saving the sub-quad information. This can be engineered inmany ways, but preferably the index comprises sub-quad information savedat steps S 4.3 and S 4.4, namely the extents of sub-quad (in x, yco-ordinates) and co-ordinates of points falling therein, and a link tothe 4 sub-quadrants within the sub-quad. Thus the index essentiallycomprises a hierarchy of sub-quad structures where the hierarchy isgiven by the relationship between each successive sub-quad and its 4sub-quads. The sub-quads are written to the index in accordance with thesub-quad hierarchy, from the largest sub-quad (here 501 on FIG. 5), downto the smallest sub-quad.

[0123] In addition to saving the sub-quad structures in the databaseDB1, the points are written to the database (either the same database ora different database), e.g. in a file, in an order given by the inverseof the sub-quad hierarchy. Thus in this case, points in the sub-quads atthe bottom of the hierarchy are written to the file first. As the pointsare written to a file, a running tally of the total number of points ismaintained, such that as each point is written to the file, a counterrepresenting: current number of points encountered so far+1 is writtento the respective sub-quad structure. The tally works from the smallestsub-quad up, and, for each sub-quad, essentially indicates the positionof the first of all points in that sub-quad in terms of all of thepoints being indexed (Pos _(sub) _(—) _(quad)) e.g. Referring to FIG.12, Number of first point written to Points in sub- sub-quad Highlightedpoint in Sub-quad quad (N) (Pos _(sub) _(—) _(quad)) points file 0, 0,1, 1 n (N = 1) 1 n, m, p, o . . . 0, 0, 1, 2 m (N = 1) 2 n, m, p, o . .. 0, 0, 0 p (N = 1) 3 n, m, p, o . . . 0, 0, 1 n, m (N = 2) 1 n, m, p, o. . . 0, 0, 2 o (N = 1) 4 n, m, p, o . . . 0, 0 n, m, p, o (N = 4) 1 n,m, p, o . . . 0, 1, c, d some points 5 n, m, p, o, Next . . .

[0124] Thus points file for sub-quad 501 (the outermost quad, see FIG.5) reads n,m,p,o . . . (starting from the smallest sub-quad 0,0,1,1). Asboth the number of points, (N) and the number in the running tally ofpoints (Pos _(sub) _(—) _(quad)) corresponding to the first point in asub-quad, are written to the sub-quad, then once a sub-quad of interesthas been identified, the points that lie within the identified sub-quadcan be extracted by moving to Pos _(sub) _(—) _(quad) in the points fileand extracting N points from that position. This is demonstrated in anembodiment demonstrating retrieval of points.

Retrieval of Information

[0125] The second invention relates to a method of retrieving entitiesby means of an index of elements related to the entities, when therelationship between each element and other elements in the index, andthe relationship between elements in the index and the entities beingindexed, is known. The method is readily applicable to an index createdin accordance with the method of indexing presented above, because theindex comprises a hierarchy of sub-quad structures, and the hierarchy iswell defined (by quad->sub-quad relationships). However, it should beborne in mind that the method is equally applicable to any type of indexthat satisfies these conditions.

[0126] In the following description, an embodiment of the retrievalprocess is described, where an index to points is queried with a queryspecifying a “region of interest”. It is assumed that:

[0127] the elements in the index are a plurality of areas within apredetermined area,

[0128] the entities being indexed are points defined by two dimensions;

[0129] there is a predetermined relationship between the areas; and

[0130] there is a predetermined relationship between the areas and thepoints.

[0131] Essentially the embodiment identifies which of the areas

[0132] a) overlaps with the region of interest, and

[0133] b) contains points within those areas that overlap with theregion of interest.

[0134] The predetermined relationship between areas and the points isthen used to extract points falling within the identified areas.

[0135] A region of interest refers to a region within the twodimensional representation of the entity. Thus for the temporal rangedescribed above (closing and opening times of business and leisureestablishments), a region of interest would be a time period ofinterest—such as “shops open between 10:00 and 13:00 hours”. The regionof interest would then be defined by a region (preferably a square)bounded within prespecified points. Referring to FIG. 33a-e, the regionof interest could be any one of:

[0136] (0,10), (13,24)≡establishments that are open sometime between10:00 & 13:00 (FIG. 33a)

[0137] (0,13), (10,24)≡establishments that are open continuously between10:00 & 13:00 (FIG. 33b)

[0138] (0,10), (10,13)≡establishments that are open before 10:00, butclose before 13:00 (FIG. 33c)

[0139] (10,13), (13,24) establishments that open after 10:00 but closeafter 13:00 (FIG. 33d)

[0140] (10,10), (13,13) establishments that open after 10:00 & closebefore 13:00 (FIG. 33e)

[0141] Similarly, for the pricing range described above, a region ofinterest would be range of prices, so that, for a retrieval requirementof “all items that fall somewhere in the range of £50.00 and £80.00”,the region of interest could be defined by a region bounded within thepoints (0,50) and (80,80).

[0142] For the location information described above, a region ofinterest would be a range of positions, such as “all items locatedbetween a first position ((lat, long)1) and a second position ((lat,long)₂)”.

[0143] A flow diagram showing steps of a method of identifying areasthat overlap with the region of interest, when the region of interestrelates to location information, is shown in FIGS. 13a and 13 b. Thesteps are then illustrated, for the region of interest shown in FIG. 14,in FIGS. 14-31. In this embodiment, specific examples of areas within apredetermined region are referred to as quads and sub-quads. The methodsteps shown in FIG. 13 are described below with reference to each ofFIGS. 14-31.

[0144]FIG. 14

[0145] S13.1.1 Read in x, y co-ordinates of a region of interest (x1,y1)(x2,y2). As an example, if a user wants to locate garages in a certainarea, these might be indexed as latitude/longitude pairs defining pointsin a two-dimensional space and the geographical area that the user isinterested in can be expressed as a “region of interest” in thetwo-dimensional space;

[0146] S13.1.2 Retrieve co-ordinates of points and size of quad for theoutermost quad and set (X1_Q, Y1_Q) (X2_Q, Y2_Q) to size of outermostquad;

[0147] S13.2 Assess whether the region of interest requires cropping: ifx1<X1_Q set x1=X1_Q; if y1<Y1_Q set y1=Y1_Q; if x2>X2_Q set x2=X2_Q; ify2>Y2_Q set y2=Y2_Q. For the example region of interest shown in FIG.14, none of these conditions are satisfied;

[0148] S13.3 Assess whether x1>x2 or y1>y2. In this case neitherconditions are satisfied;

[0149] Steps S13.2 and S13.3 are only one example of conditions that canbe applied to establish whether the sub quad retrieved at S13.1.2overlaps with the region of interest, and whether, if there is overlap,there are any points within the overlapping region; it is envisaged thatalternative methods could be applied to establish this.

[0150] S13.4 Assess whether the region of interest overlaps exactly withthe quad. No:

[0151] S13.5 Retrieve a sub-quad (503 a) of the present quad (501) inaccordance with S13.1.2, as is described with reference to FIG. 15

[0152]FIG. 15

[0153] S13.1.2 Retrieve co-ordinates of points and size of sub-quad from“shrink-wrapped” sub-quad 0 601: set (X1_Q, Y1_Q) (X2_Q, Y2_Q) to sizeof “shrink-wrapped” sub-quad 601;

[0154] S13.2 Assess whether the region of interest requires cropping: ifx1<X1_Q set x1=X1_Q; if y1<Y1_Q set y1=Y1_Q; if x2>X2_Q set x2=X2_Q; ify2>Y2_Q set y2=Y2_Q. In this case none of these conditions aresatisfied;

[0155] S13.3 Assess whether x1>x2 or y1>y2. In this case neitherconditions are satisfied;

[0156] S13.4 Assess whether the region of interest overlaps exactly withthe sub-quad. No:

[0157] S13.5 Retrieve a sub-quad of the present sub-quad in accordancewith S13.1.2, as is described with reference to FIGS. 16 and 17 FIGS. 16& 17

[0158] S13.1.2 Retrieve co-ordinates of points and size of sub-quad from“shrink-wrapped” sub-quad 0,0 701: set (X1_Q, Y1_Q) (X2_Q, Y2_Q) to sizeof “shrink-wrapped” sub-quad 701;

[0159] S13.2 Assess whether the region of interest requires cropping:x2>X2_Q so set x2=X2_Q and y2>Y2_Q so set y2=Y2_Q;

[0160] S13.3 Assess whether x1>x2 or y1>y2. In this case (FIG. 17) bothconditions are satisfied, which means that there are no points insub-quad 0,0 (701) that fall within the region of interest;

[0161] S13.6 Increment sub-quad counter i at this level (0,i), andretrieve sub-quad (0,1) in accordance with S13.1.2, as described withreference to FIGS. 18 and 19.

[0162]FIGS. 18 & 19

[0163] S13.1.2 Retrieve co-ordinates of points and size of sub-quad from“shrink-wrapped” sub-quad 0,1: set (X1_Q, Y1_Q) (X2_Q, Y2_Q) to size of“shrink-wrapped” sub-quad 0,1;

[0164] S13.2 Assess whether the region of interest requires cropping:x1<X1_Q so set x1=X1 Q and y2>Y2_Q so set y2=Y2_Q;

[0165] S13.3 Assess whether x1>x2 or y1>y2. In this case neitherconditions are satisfied;

[0166] S13.4 Assess whether the region of interest (now cropped)overlaps exactly with the sub-quad. No:

[0167] S13.5 Retrieve a sub-quad 0,1,0 of the present sub-quad 0,1 inaccordance with S13.1.2, as is described with reference to FIGS. 20a and20 b.

[0168]FIGS. 20a & 20 b

[0169] S13.1.2 Retrieve co-ordinates of points and size of sub-quad from“shrink-wrapped” sub-quad 0,1,0: set (X1_Q, Y1_Q) (X2_Q, Y2_Q) to sizeof “shrink-wrapped” sub-quad 0,1,0;

[0170] S13.2 Assess whether the region of interest requires cropping:x2>X2_Q so set x2=X2_Q and y2>Y2_Q so set y2=Y2_Q;

[0171] S13.3 Assess whether x1>x2 or y1>y2. In this case (FIG. 20b) bothconditions are satisfied, which means that there are no points insub-quad 0,1,0 that fall within the region of interest;

[0172] S13.6 Increment sub-quad counter i at this level (0,1,i), and(S13.6.1) retrieve sub-quad (0,1,1) in accordance with S13.1.2, as isdescribed with reference to FIGS. 21a and 21 b.

[0173]FIGS. 21a & 21 b

[0174] S13.1.2 Retrieve co-ordinates of points and size of sub-quad from“shrink-wrapped” sub-quad 0,1,1: set (X1_Q, Y1_Q) (X2_Q, Y2_Q) to sizeof “shrink-wrapped” sub-quad 0,1,1—i.e. a single point;

[0175] S13.2 Assess whether the region of interest requires cropping:x1<X1_Q so set x1=X1_Q and y2>Y2_Q so set y2=Y2_Q;

[0176] S13.3 Assess whether x1>x2 or y1>y2. In this case (FIG. 21b) bothconditions are satisfied, which means that there are no points insub-quad 0,1,1 that fall within the region of interest;

[0177] S13.6 Increment sub-quad counter i at this level (0,1,i), and(S13.6.1) retrieve sub-quad (0,1,2) in accordance with S13.1.2, as isdescribed with reference to FIGS. 22a and 22 b.

[0178]FIGS. 22a & 22 b

[0179] S13.1.2 Retrieve co-ordinates of points and size of sub-quad from“shrink-wrapped” sub-quad 0,1,2: set (X1_Q, Y1_Q) (X2_Q, Y2_Q) to sizeof “shrink-wrapped” sub-quad 0,1,2—i.e. a single point;

[0180] S13.2 Assess whether the region of interest requires cropping:x1<X1_Q so set x1=X1_Q, y1<Y1_Q, x2>X2_Q and y2>Y2_Q so set x1=X1_Q,y1=Y1_Q, x2=X2_Q, y2=Y2_Q;

[0181] S13.3 Assess whether x1>x2 or y1>y2. No

[0182] S13.4 Assess whether the region of interest (now cropped)overlaps exactly with the sub-quad: YES

[0183] S13.4.2 Record the sub-quad and number of points within thesub-quad (here 1);

[0184] S13.6 Increment sub-quad counter i at this level (0,1,i), and(S13.6.1) retrieve sub-quad (0,1,3) in accordance with S13.1.2, as isdescribed with reference to FIGS. 23a and 23 b.

[0185]FIGS. 23a & 23 b

[0186] S13.1.2 Retrieve co-ordinates of points and size of sub-quad from“shrink-wrapped” sub-quad 0,1,3: set (X1_Q, Y1_Q) (X2_Q, Y2_Q) to sizeof “shrink-wrapped” sub-quad 0,1,3—i.e. a single point;

[0187] S13.2 Assess whether the region of interest requires cropping:x1<X1_Q so set x1=X1_Q, y1<Y1_Q, x2>X2_Q and y2>Y2_Q so set x1=X1_Q,y1=Y1_Q, x2=X2_Q, y2=Y2_Q;

[0188] S13.3 Assess whether x1>x2 or y1>y2. No

[0189] S13.4 Assess whether the region of interest (now cropped)overlaps exactly with the sub-quad: YES

[0190] S13.4.2 Record the sub-quad and number of points within thesub-quad (here 1);

[0191] S13.6 Increment sub-quad counter i at this level (0,1,i) . . .i>3 so (S13.6.2) retrieve sub-quad (0,2) in accordance with S13.1.2, asis described with reference to FIGS. 24 and 25.

[0192]FIGS. 24 & 25

[0193] S13.1.2 Retrieve co-ordinates of points and size of sub-quad from“shrink-wrapped” sub-quad 0,2: set (X1_Q, Y1_Q) (X2_Q, Y2_Q) to size of“shrink-wrapped” sub-quad 0,2;

[0194] S13.2 Assess whether the region of interest requires cropping:y1<Y1_Q so set y1=Y1_Q and x2>X2_Q so set x2=X2_Q;

[0195] S13.3 Assess whether x1>x2 or y1>y2. In this case neitherconditions are satisfied;

[0196] S13.4 Assess whether the region of interest (now cropped)overlaps exactly with the sub-quad. No:

[0197] S13.5 Retrieve a sub-quad 0,2,0 of the present sub-quad 0,2 inaccordance with S13.1.2, as is described with reference to FIGS. 26a and26 b.

[0198]FIGS. 26a & 26 b

[0199] S13.1.2 Retrieve co-ordinates of points and size of sub-quad from“shrink-wrapped” sub-quad 0,2,0: set (X1_Q, Y1_Q) (X2_Q, Y2_Q) to sizeof “shrink-wrapped” sub-quad 0,2,0;

[0200] S13.2 Assess whether the region of interest requires cropping:x2>X2_Q so set x2=X2_Q and y2>Y2_Q so set y2=Y2_Q;

[0201] S13.3 Assess whether x1>x2 or y1>y2. In this case (FIG. 26b) bothconditions are satisfied, which means that there are no points insub-quad 0,2,0 that fall within the region of interest;

[0202] S13.6 Increment sub-quad counter i at this level (0,2,i), and(S13.6.1) retrieve sub-quad (0,2,1) in accordance with S13.1.2, as isdescribed with reference to FIGS. 27a and 27 b.

[0203]FIGS. 27a & 27 b

[0204] S13.1.2 Retrieve co-ordinates of points and size of sub-quad from“shrink-wrapped” sub-quad 0,2,1: set (X1_Q, Y1_Q) (X2_Q, Y2_Q) to sizeof “shrink-wrapped” sub-quad 0,2,1—i.e. a single point;

[0205] S13.2 Assess whether the region of interest requires cropping:x1<X1_Q so set x1=X1_Q, y1<Y1_Q, x2>X2_Q and y2>Y2_Q so set x1=X1_Q,y1=Y1_Q, x2=X2_Q, y2=Y2_Q;

[0206] S13.3 Assess whether x1>x2 or y1>y2. No

[0207] S13.4 Assess whether the region of interest (now cropped)overlaps exactly with the sub-quad: YES

[0208] S13.4.2 Record the sub-quad and number of points within thesub-quad (here 1);

[0209] S13.6 Increment sub-quad counter i at this level (0,1,i) . . .i<3 so (S13.6.1) retrieve sub-quad (0,2,2) in accordance with S13.1.2,as is described with reference to FIGS. 28a and 28 b.

[0210]FIGS. 28a & 28 b

[0211] S13.1.2 Retrieve co-ordinates of points and size of sub-quad from“shrink-wrapped” sub-quad 0,2,2: set (X1_Q, Y1_Q) (X2_Q, Y2_Q) to sizeof “shrink-wrapped” sub-quad 0,2,2;

[0212] S13.2 Assess whether the region of interest requires cropping:x2>X2_Q so set x2=X2_Q and y1<Y1_Q so set y1=Y1_Q;

[0213] S13.3 Assess whether x1>x2 or y1>y2. In this case (FIG. 28b) bothconditions are satisfied, which means that there are no points insub-quad 0,2,2 that fall within the region of interest;

[0214] S13.6 Increment sub-quad counter i at this level (0,2,i), and(S13.6.1) retrieve sub-quad (0,2,3) in accordance with S13.1.2, as isdescribed with reference to FIG. 29.

[0215]FIG. 29

[0216] S13.1.2 Retrieve co-ordinates of points and size of sub-quad from“shrink-wrapped” sub-quad 0,2,3: there is no sub-quad corresponding to0,2,3 because there are no points in the area corresponding to thissub-quad, so jump to S13.6

[0217] S13.6.2 Increment sub-quad counter i at this level (0,2,i): i>3,so (S13.6.2) retrieve sub-quad (0,3) in accordance with S13.1.2, as isdescribed with reference to FIGS. 30 and 31.

[0218]FIGS. 30 & 31

[0219] S13.2 Assess whether the region of interest requires cropping:x1<X1_Q so set x1=X1_Q, y1<Y1_Q, x2>X2_Q and y2>Y2_Q so set x1=X1_Q,y1=Y1_Q x2=X2_Q, y2=Y2_Q;

[0220] S13.3 Assess whether x1>x2 or y1>y2. No

[0221] S13.4 Assess whether the region of interest (now cropped)overlaps exactly with the sub-quad: YES

[0222] S13.4.2 Record the sub-quad and number of points within thesub-quad (here 2);

[0223] S13.6 Increment sub-quad counter i at this level (0,i) . . . i>3so (S13.6.2) retrieve sub-quad 1 in accordance with S13.1.2.

[0224] As can be seen from FIG. 14, the region of interest falls solelywithin sub-quad 0 and the sub-quads therein, such that when processdescribed in FIGS. 13a and 13 b is applied to sub-quads 1, 2 and 3, theconditions applied at steps S13.2 and S13.3 will cause the process toterminate within a few steps.

[0225] At the end of the process of identifying sub-quads overlappingwith the region of interest, the sub-quads, and the number of pointswithin those sub-quads, that were recorded at steps S13.4.2 arereturned—for this example:

[0226] sub-quad 0,1,2 number of points: 1 point;

[0227] sub-quad 0,1,3 number of points: 1 point;

[0228] sub-quad 0,2,1 number of points: 1 point;

[0229] sub-quad 0,3 number of points: 2 points.

[0230] Once the sub-quads have been identified, the actual points areretrieved. In this embodiment, and as described above, the points arestored in a flat file. Furthermore each sub-quad structure stores anumber indicating the position, relative to the total number of pointsbeing indexed (Referring for example to FIG. 4, all of the points withinquad 501), of the first point within a respective sub-quad. The processfor actual retrieval of points is shown in FIG. 32: For each quad thatwas recorded at step S13.4.2:

[0231] S32.1 For that sub-quad retrieve number of points falling withinsub-quad (N);

[0232] S32.2 Retrieve position of the first point from the correspondingsub-quad structure (Pos _(sub) _(—) _(quad));

[0233] S32.3 Move a file pointer to a position in the points file givenby Pos _(sub) _(—) _(quad);

[0234] S32.4 From this position, extract N points from the file.

Implementation

[0235] The processes described in FIGS. 4a and 4 b, FIGS. 13a and 13 band FIG. 32 are implemented in software, and run on one of, ordistributed between, the terminals T3, T4. Terminals T3, T4 are thusrepresentative of one or a plurality of computers, and are preferablyserver computers.

[0236] Points to be indexed can be input to terminals T3, T4 via a fileor similar, the index created as described above can be stored in thedatabase DB1, and the points file can also be stored in the databaseDB1. An area of interest can be input in the form of a database query,entered via a client terminal (not shown) and communicated over thenetwork N1 in a known manner.

[0237] Preferably the processes described above are implemented in the Cprogramming language, and use recursive programming methods to “burrowdown” to sub-quads within sub-quads. It is understood that such a methodis inessential to the invention.

Additional Details and Modifications

[0238] As stated above, the invention can be used to index and retrievedata that is expressed in 2 dimensions. The invention can also be usedto index and retrieve data of more than 2 dimensions, providing the data(n-dimensional data, where n>2) can be transformed into 2-dimensions. Insuch cases the transformed, 2-dimensional, data can be indexed andretrieved according to the invention. For example, objects defined in3-dimensional space can be transformed into 2-dimensions using a packagesuch as NCAR Graphics, which is a Unix based graphics package thatoffers a wide range of capabilities for the display and manipulation ofnumerical data, and has been developed by the University Corporation forAtmospheric Research. (See http://www.dkrz.de/ngdoc/ng4.0.1 forinformation relating to NCAR graphics andhttp://ngwww.ucar.edu/ngdoc/ng/fund/chp16-21/threed.html for informationrelating to the 3 to 2 dimensional transformation aspects).

[0239] Other variations could be made. For instance, a simple one wouldbe to use division of quads and sub-quads into different numbers ofareas in each iteration, such as eight or ten instead of four.

1. A method of retrieving one or more points that are contained within apredetermined area, comprising the steps of: (i) retrieving dataidentifying a region, the region encompassing one or more points andbeing associated with linking data which, for each region, identifiesthe point or points encompassed by that region; (ii) performing aprocess in respect of the region, the process comprising the steps of:comparing extents of the region with extents of the predetermined areain order to establish whether the region overlaps with the predeterminedarea; if there is overlap, retrieving data identifying sub-regions ofthe region and identifying any such sub-regions whose extents are whollywithin the predetermined area; (iii) for each sub-region, repeating theprocess until all sub-regions thereof falling wholly within thepredetermined area are identified, and (iv) accessing linking datacorresponding to the identified sub-regions so as to retrieve pointsencompassed by the sub-regions.
 2. A method according to claim 1,wherein the plurality of points is pre-stored as a list of points inaccordance with relationships between sub-regions, and the linking dataincludes a value indicating the position of a first of the correspondingencompassed points in the list of points, and wherein the accessing step(iv) comprises, for each of the identified sub-regions: retrieving anidentifier representative of the number of encompassed points andretrieving a position value associated with the identified sub-region;and accessing the list of points and retrieving the number ofencompassed points from a position in the list given by the positionvalue.
 3. A method according to claim 1 or claim 2, in which the dataidentifying the region and sub-regions and corresponding linking dataare stored in an index.
 4. A method according to any one of thepreceding claims, in which the predetermined area corresponds to rangeinformation.
 5. A method according to claim 4, in which the rangeinformation includes any one of geographical range information,operating hours information, delivery time information, and/or medicalinformation.
 6. A computer program, or a suite or computer programs,comprising a set of instructions to cause a computer, or a suite ofcomputers, to perform the method according to claims 1 to
 5. 7. Acomputer data signal embodied in a carrier wave and representingsequences of instructions which, when executed by a processor cause theprocessor to perform the method according to claims 1 to
 5. 8. Aretrieval method comprising the steps of sending a retrieval request,the retrieval request comprising a signal indicative of an area withinwhich points are to be retrieved and a trigger signal, the triggersignal invoking the method according to any one of claims 1 to
 5. 9.Apparatus for retrieving one or more points that are contained by apredetermined area, the apparatus comprising input means arranged toreceive a retrieval request, the retrieval request comprising a signalindicative of the predetermined area; storage means arranged to storedata indicative of one or more regions, each region encompassing one ormore points; linking data associated with the regions, wherein each itemof linking data identifies the point or points encompassed by arespective region; and data identifying the points; retrieving meansarranged to access the store and retrieve one or more pointscorresponding to the predetermined area; and output means arranged tooutput the one or more retrieved points, the apparatus being arranged,in response to receipt of a retrieval request, such that the retrievingmeans retrieves a region from the store and performs a process inrespect of the retrieved region, the process comprising the steps of:comparing extents of the region with extents of the predetermined areain order to establish whether the region overlaps with the predeterminedarea; if there is overlap, retrieving data identifying sub-regions ofthe region and identifying any such sub-regions whose extents are whollywithin the predetermined area; the retrieving means then, for eachsub-region, repeats the process until all sub-regions thereof fallingwholly within the predetermined area are identified, accesses linkingdata corresponding to the identified sub-regions and retrieves pointsencompassed by the sub-regions, whereupon the output means outputs theretrieved points.
 10. Server apparatus for retrieving one or more pointsthat are contained by a predetermined area, the server apparatuscomprising: input means arranged to receive a retrieval request, theretrieval request comprising a signal indicative of the predeterminedarea; accessing means arranged to access a store in respect of thepredetermined area; and receiving means arranged to receive data fromthe store; the store comprising data indicative of one or more regions,each region encompassing one or more points; the store furthercomprising linking data associated with the regions, which linking dataidentifies the point or points encompassed by that region; the storebeing in operative association with query means for querying the store,the query means being arranged to identify one or more regions that arecontained by the predetermined area, access linking data correspondingthereto and transmit the accessed linking data to the server apparatus.